// 班级列表
export const classes = [
  '计科1班', '计科2班', '计科3班', '计科4班',
  '软工1班', '软工2班', '软工3班',
  '数媒1班', '数媒2班',
  '物联网1班', '物联网2班',
  '信安1班', '信安2班',
  '大数据1班', '大数据2班',
  '人工智能1班', '人工智能2班'
];

// 更真实的姓氏库
const surnames = [
  '王', '李', '张', '刘', '陈', '杨', '黄', '赵', '吴', '周', '徐', '孙', '马', '朱', 
  '胡', '郭', '何', '高', '林', '郑', '谢', '罗', '梁', '宋', '唐', '许', '韩', '冯', 
  '邓', '曹', '彭', '曾', '萧', '田', '董', '袁', '潘', '于', '蒋', '蔡', '余', '杜'
];

// 更真实的名字组合
const names1 = ['子', '思', '宇', '浩', '雨', '天', '梓', '嘉', '雅', '梦'];
const names2 = ['涵', '宇', '轩', '晨', '阳', '宸', '萱', '琪', '诚', '欣'];

// 学业问题类型
export const academicIssues = [
  '1门课程不及格',
  '2门课程不及格',
  '3门课程不及格',
  '选修学分不足',
  '缺课次数过多',
  '考试作弊记录'
];

// 健康问题类型
export const healthIssues = [
  '心理问题',
  '视力问题',
  '颈椎问题',
  '睡眠问题',
  '营养不良'
];

// 生成一个固定的学生姓名映射表
const generateStudentNameMap = () => {
  const nameMap = new Map();
  let idCounter = 202214600101;

  classes.forEach(className => {
    for (let i = 0; i < 30; i++) {
      const surname = surnames[Math.floor(Math.random() * surnames.length)];
      const name = names1[Math.floor(Math.random() * names1.length)] + 
                  names2[Math.floor(Math.random() * names2.length)];
      
      nameMap.set(idCounter.toString(), surname + name);
      idCounter++;
    }
  });

  return nameMap;
};

// 创建一个固定的姓名映射表
const studentNameMap = generateStudentNameMap();

// 生成基础学生数据（不包含问题）
const generateBaseStudents = () => {
  const allStudents = [];
  let idCounter = 202214600101;

  classes.forEach(className => {
    for (let i = 0; i < 30; i++) {
      const id = idCounter.toString();
      allStudents.push({
        id: id,
        name: studentNameMap.get(id),
        class: className,
        academicIssue: '无',
        healthIssue: '无'
      });
      
      idCounter++;
    }
  });

  return allStudents;
};

// 为学生分配问题
const assignIssues = (students) => {
  const totalStudents = students.length;
  
  // 分配学业问题（20%的学生）
  const academicProblemCount = Math.floor(totalStudents * 0.2);
  for (let i = 0; i < academicProblemCount; i++) {
    const randomIndex = Math.floor(Math.random() * totalStudents);
    if (students[randomIndex].academicIssue === '无') {
      students[randomIndex].academicIssue = academicIssues[Math.floor(Math.random() * academicIssues.length)];
    } else {
      i--; // 如果这个学生已经有问题，重试另一个学生
    }
  }

  // 分配健康问题（37%的学生）
  const healthProblemCount = Math.floor(totalStudents * 0.37);
  for (let i = 0; i < healthProblemCount; i++) {
    const randomIndex = Math.floor(Math.random() * totalStudents);
    if (students[randomIndex].healthIssue === '无') {
      students[randomIndex].healthIssue = healthIssues[Math.floor(Math.random() * healthIssues.length)];
    } else {
      i--; // 如果这个学生已经有问题，重试另一个学生
    }
  }

  return students;
};

// 导出生成完整学生数据的函数
export const generateStudentData = () => {
  const baseStudents = generateBaseStudents();
  return assignIssues(baseStudents);
};

// 导出班级选项（用于下拉菜单）
export const classOptions = classes.map(className => ({
  value: className,
  label: className
})); 